home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-06-17 | 2.3 KB | 93 lines | [TEXT/CWIE] |
- // Program Author: Paul Baxter
- // pbaxter@assistivetech.com
- //
- //
- #include "DeferredTask.h"
- #include "speech.h"
-
- #if !GENERATINGCFM
- void MyTask(long dtParam :__A1);
- #else
- void MyTask(long dtParam);
- #endif
-
- DeferredTask* gDTRecPtr;
-
- DeferredTaskUPP gDeferreredTask = nil;
- long gDTParam = nil;
-
-
-
- // * ****************************************************************************** *
- // * InitDeferredTask
- // * Init DefferedTaskRecord
- // * ****************************************************************************** *
- OSErr InitDeferredTask(void)
- {
- THz theZone;
-
- theZone = GetZone();
- SetZone(SystemZone());
- if (!gDeferreredTask) {
- gDeferreredTask = NewDeferredTaskProc(MyTask);
- #if !GENERATINGCFM
- gDTParam = SetCurrentA5();
- #endif
- gDTRecPtr = (DeferredTask*)NewPtrSysClear(sizeof(DeferredTask));
- gDTRecPtr->qType = dtQType;
- gDTRecPtr->dtAddr = gDeferreredTask;
- gDTRecPtr->dtParam = gDTParam;
- }
- SetZone(theZone);
- return noErr;
- }
-
- // * ****************************************************************************** *
- // * RemoveDTask
- // * DisposeMemory used by gDTRecPtr
- // * ****************************************************************************** *
- void RemoveDTask(void)
- {
- if (gDTRecPtr)
- DisposePtr((Ptr)gDTRecPtr);
-
- if (gDeferreredTask)
- DisposeRoutineDescriptor(gDeferreredTask);
- }
-
- // * ****************************************************************************** *
- // * InstallDeferredTask
- // * Install our Task
- // * ****************************************************************************** *
- void InstallDeferredTask(void)
- {
- if (gDTRecPtr)
- DTInstall(gDTRecPtr);
- }
-
- // * ****************************************************************************** *
- // * MyTask
- // * The actual task 68K
- // * ****************************************************************************** *
- #if !GENERATINGCFM
- void MyTask(long dtParam :__A1)
- {
- long oldA5;
-
- oldA5 = SetA5(dtParam);
-
- SpeakBuffers(); // This is NOT safe and MAY EVEN CRASH but this is MacHack!
- SetA5(oldA5);
- }
- #else
- // * ****************************************************************************** *
- // * MyTask
- // * The actual task PPC
- // * ****************************************************************************** *
- void MyTask(long dtParam)
- {
- #pragma unused(dtParam)
- SpeakBuffers(); // This is NOT safe and MAY EVEN CRASH but this is MacHack!
- }
-
- #endif